package com.ftx.controller.test.annotation.profile;

import com.ftx.controller.test.annotation.beans.MainConfigBeans;
import org.junit.Test;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;

import javax.sql.DataSource;

/**
 * Created by fengtingxin on 2020/4/24.
 */
public class IoCTest_Profile {

    /**
     *  使用Profile 的几种方式：
     *  1.使用命令行动态参数，在jvm中配置 -Dspring.profiles.active=test  这样配置可以获取到 @Profile("test") 这个配置下面对应的bean
     *  2.使用代码的方式 获取需要激活的环境
     *  3.没有标注环境标识的bean，在任何环境下都是可以加载的
     */

    @Test
    public void testImport(){


        //使用无参构造器
        AnnotationConfigApplicationContext applicationContext = new AnnotationConfigApplicationContext();

        //需要激活的环境
        applicationContext.getEnvironment().setActiveProfiles("dev");

        //注册配置类
        applicationContext.register(MainConfigOfProfile.class);

        //启动刷新容器
        applicationContext.refresh();

        //使用有参构造器
//        AnnotationConfigApplicationContext applicationContext = new AnnotationConfigApplicationContext(MainConfigOfProfile.class);
        System.out.println("容器创建完成");

//        String []  dataSources = applicationContext.getBeanNamesForType(DataSource.class);
//
//        for (String name : dataSources){
//            System.out.println(name);
//        }
        String [] beanNames = applicationContext.getBeanDefinitionNames();
        for (String name : beanNames){
            System.out.println(name);
        }

    }
}
